The invention relates in general to the use of pointer devices in a computer system. And specifically a means for the automatic detection and selection of an external pointer device by an operational computer system.
Pointing devices are well known in the computer field. Many, if not most, modern computer systems have at least one such device. Example pointer devices include, but are not limited to, a mouse, a trackball, a capacitive touch pad, a joy stick, and a keyboard. Portable computer systems such as laptop and notebook computers typically have built-in pointing devices. Often built-in pointing devices are regarded by many users as not being as comfortable to use as standard external pointing devices. Accordingly, many portable computers have the capability of attaching an external pointing device through a port, e.g., a serial port.
For a pointing device to be useable, the central processing unit (CPU) of the computer system must recognize that the device is connected to the computer. In many, if not most portable computer systems, the CPU checks for the presence of pointing devices only at the initial power-up or upon a hardware reset of the computer system. Thus, if only a built-in pointing device is present at the time of power-up or reset, a subsequently-attached external pointing device will not be recognized, and thus will not be useable. On the other hand, if an external pointing device is present at the time the computer system is powered-up or reset but is later removed, the computer will not automatically detect and switch to the built-in pointing device.
As shown in FIG. 1, a typical portable computer system 100 comprises a built-in keyboard 105, a built-in pointer device 110, a built-in display 115, a central processing unit (CPU) 120, memory 125, and a microcontroller 130. The built-in pointer device 110 can be any convenient type such as those described above. Those of ordinary skill in the field of computer system's design will recognize that the microcontroller 130 is usually a special-purpose microprocessor specifically designed to provide an interface between input-output (I/O) devices, such as a keyboard or pointer device, and the CPU 120. In general, a microcontroller 130 for use in a portable computer system 100 will have a number of ports through which I/O devices may be connected.
In particular, a microcontroller port used to interface common pointer device normally allows for the bi-directional transmission of multiple signals simultaneously. That is, the connection between an internal pointer device 110 and the microcontroller 130 comprises a bus structure 135. For a serial pointer device, the bus 135 may consist of a clock signal path, and a data signal path. (In addition, power and ground signal paths are also present.) It will further be recognized by those of ordinary skill that the microcontroller 130 may contain both permanent memory and working memory. Permanent memory may be used to store the microcontroller's operational instructions and is often referred to as firmware 140. Working memory is typically implemented as static random access memory (SRAM), and is used by the microcontroller to temporarily store information needed for it to carry out its tasks.
During operation, the microcontroller 130 may periodically poll each (or any selected subset) of its ports to determine whether any input exists which must be processed and/or routed to the CPU 120. Illustrative microcontrollers suitable for use in a portable computer system include the INTEL UPI-41 and 80C51 microcontrollers. A microcontroller 130, when used to process information to and from a keyboard 105 or a pointing device, may also be referred to as a keyboard controller or keyboard microcontroller.